package com.vspuzzle;


import java.util.HashMap;
import java.util.Map;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.DragEvent;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TableRow;
import android.widget.TextView;



public class Gioco extends Activity {

	public final class_Game15 game15 = new class_Game15();
	public final Map<Integer, Map<String,Integer> > matrice_text_views = new HashMap<Integer, Map<String,Integer>>();

	/* Ritorna l'id della TextView della relativa tessera */
	public static int get_id_view_tessera(int numero_tessera){
		switch (numero_tessera){
		case 0: return R.id.tessera_0;
		case 1: return R.id.tessera_1;
		case 2: return R.id.tessera_2;
		case 3: return R.id.tessera_3;
		case 4: return R.id.tessera_4;
		case 5: return R.id.tessera_5;
		case 6: return R.id.tessera_6;
		case 7: return R.id.tessera_7;
		case 8: return R.id.tessera_8;
		case 9: return R.id.tessera_9;
		case 10: return R.id.tessera_10;
		case 11: return R.id.tessera_11;
		case 12: return R.id.tessera_12;
		case 13: return R.id.tessera_13;
		case 14: return R.id.tessera_14;
		case 15: return R.id.tessera_15;
		default: return -1;
		}
	}
	
	
	void iniziallizza_tessera(final TextView t,int topMargin, int leftMargin, int height, int width, int x,int y){
		
		Map<String,Integer> data = new HashMap<String, Integer>();
		data.put("x", x);
		data.put("y", y);
		data.put("topMargin", topMargin);
		data.put("leftMargin", leftMargin);
		matrice_text_views.put(t.getId(), data);
		
		((MarginLayoutParams) t.getLayoutParams()).topMargin = topMargin ;
		((MarginLayoutParams) t.getLayoutParams()).leftMargin = leftMargin ;
		((MarginLayoutParams) t.getLayoutParams()).height = height;
		((MarginLayoutParams) t.getLayoutParams()).width = width;
		
		final GestureDetector gestures;
		final GestureListener myListener = new GestureListener(this,t,game15,matrice_text_views);
		gestures = new GestureDetector(  t.getContext(),
				myListener);

		
		t.setOnTouchListener(new View.OnTouchListener() {
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				gestures.onTouchEvent(event);

				if(event.getAction()==MotionEvent.ACTION_UP)
					return myListener.my_actionUp(event);
				return true;
			}
		});
	}
	void iniziallizza_tessere(){
		
		/* Layout Tessere*/
		RelativeLayout layout_tessere = (RelativeLayout) findViewById(R.id.layout_tessere);
		RelativeLayout padre = (RelativeLayout) findViewById(R.id.padre);
		
		DisplayMetrics outMetrics = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
		int lwidth = outMetrics.widthPixels;
		int margin = padre.getPaddingLeft();
		int lato = (layout_tessere.getLayoutParams() ).height = lwidth - (margin *2);
		
		/* Tessere */
		int griglia = lato/4;
		int margine_griglia = 1;
		int margine_tessera = 1;
		
		int height = griglia-margine_tessera;
		int width = griglia-margine_tessera;
				
		
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_1),margine_griglia, margine_griglia , height, width,0,0);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_2),margine_griglia, margine_griglia + griglia , height, width,1,0);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_3),margine_griglia, margine_griglia + griglia*2 , height, width,2,0);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_4),margine_griglia, margine_griglia + griglia*3 , height, width,3,0);

		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_5),margine_griglia+griglia, margine_griglia , height, width,0,1);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_6),margine_griglia+griglia, margine_griglia + griglia , height, width,1,1);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_7),margine_griglia+griglia, margine_griglia + griglia*2 , height, width,2,1);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_8),margine_griglia+griglia, margine_griglia + griglia*3 , height, width,3,1);

		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_9),margine_griglia+griglia*2, margine_griglia , height, width,0,2);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_10),margine_griglia+griglia*2, margine_griglia + griglia , height, width,1,2);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_11),margine_griglia+griglia*2, margine_griglia + griglia*2 , height, width,2,2);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_12),margine_griglia+griglia*2, margine_griglia + griglia*3 , height, width,3,2);
		
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_13),margine_griglia+griglia*3, margine_griglia , height, width,0,3);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_14),margine_griglia+griglia*3, margine_griglia + griglia , height, width,1,3);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_15),margine_griglia+griglia*3, margine_griglia + griglia*2 , height, width,2,3);
		iniziallizza_tessera((TextView)  findViewById(R.id.tessera_0),margine_griglia+griglia*3, margine_griglia + griglia*3 , height, width,3,3);

	}	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_gioco);
		
		iniziallizza_tessere();


		
/*		
		DisplayMetrics outMetrics = new DisplayMetrics();		
		
		getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
		int display_height = outMetrics.heightPixels;
		int display_width = outMetrics.widthPixels;

		//Status bar height
		int rid = getResources().getIdentifier("status_bar_height", "dimen", "android");
		int status_bar_height = getResources().getDimensionPixelSize(rid);		
		*/
				
		
		
	}

	

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.gioco, menu);
		return true;
	}

}
